package leetcode.cn;

/**
 * @version 1.8
 * @Author Djx_hmbb
 * @Date 2023/11/2 23:22
 * @注释:输出两个和为s的数字
 */
public class SumisS {
    //输入一个有序数列，输出两个和为s的数字

//利用单调性
    public static int[] twoNums(int[] nums, int s) {
        //因为这个数列是有序数列，所以直接上左右指针。
        int n = nums.length;
        int left=0,right=n-1,sum=0;
        while (left<right){
            sum = nums[left]+nums[right];
            if(sum>s){// 如果sum>s，说明右指针大了，移动右指针；
                right--;
            }else if(sum < s){// 如果sum<s，说明左指针小了，移动左指针。
                left++;
            }else {//如果相等，存入ret数组，直接返回即可。
                return new int[]{nums[left],nums[right]};
            }
        }
        return new int[]{0};
    }
    public static void main(String[] args) {
        int[] nums = {2,7,11,15};
        int s = 18;
        int[] twoNums = twoNums(nums, s);
        System.out.println(twoNums[0]+"  "+twoNums[1]);
    }
}
